<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="${basePackage}.dao.I${className}Dao">

	<resultMap id="BaseResultMap"
		type="${basePackage}.model.${className}">
		
		${initBaseResultMap}
		
	</resultMap>
	
	
	<sql id="Example_Where_Clause">
		<where>
			<foreach collection="oredCriteria" item="criteria" separator="or">
				<if test="criteria.valid">
					<trim prefix="(" prefixOverrides="and" suffix=")">
						<foreach collection="criteria.criteria" item="criterion">
							<choose>
								<when test="criterion.noValue">
									and ${criterion.condition}
								</when>
								<when test="criterion.singleValue">
									and ${criterion.condition} #{criterion.value}
								</when>
								<when test="criterion.betweenValue">
									and ${criterion.condition} #{criterion.value} and
									#{criterion.secondValue}
								</when>
								<when test="criterion.listValue">
									and ${criterion.condition}
									<foreach close=")" collection="criterion.value" item="listItem"
										open="(" separator=",">
										#{listItem}
									</foreach>
								</when>
							</choose>
						</foreach>
					</trim>
				</if>
			</foreach>
		</where>
	</sql>
	
	
	<sql id="Update_By_Example_Where_Clause">
		<where>
			<foreach collection="example.oredCriteria" item="criteria"
				separator="or">
				<if test="criteria.valid">
					<trim prefix="(" prefixOverrides="and" suffix=")">
						<foreach collection="criteria.criteria" item="criterion">
							<choose>
								<when test="criterion.noValue">
									and ${criterion.condition}
								</when>
								<when test="criterion.singleValue">
									and ${criterion.condition} #{criterion.value}
								</when>
								<when test="criterion.betweenValue">
									and ${criterion.condition} #{criterion.value} and
									#{criterion.secondValue}
								</when>
								<when test="criterion.listValue">
									and ${criterion.condition}
									<foreach close=")" collection="criterion.value" item="listItem"
										open="(" separator=",">
										#{listItem}
									</foreach>
								</when>
							</choose>
						</foreach>
					</trim>
				</if>
			</foreach>
		</where>
	</sql>
	
	
	
	<sql id="Base_Column_List">
		${baseColumnList}
	</sql>
	
	
	
	<select id="selectByExample"
		parameterType="${basePackage}.model.${className}Example"
		resultMap="BaseResultMap">
		select
		<if test="distinct">
			distinct
		</if>
		'true' as QUERYID,
		<include refid="Base_Column_List" />
		from ${tableName}
		<if test="_parameter != null">
			<include refid="Example_Where_Clause" />
		</if>
		<if test="orderByClause != null">
			order by ${orderByClause}
		</if>
		<if test="limitStart != null and limitStart >= 0">
			limit ${limitStart} , ${count}
		</if>
	</select>
	
	
	
	<select id="selectByPrimaryKey" parameterType="${priDataType}"
		resultMap="BaseResultMap">
		select
		<include refid="Base_Column_List" />
		from ${tableName}
		where ${priColumnName} = #{${priFormatColumnName}}
	</select>
	
	
	<delete id="deleteByPrimaryKey" parameterType="${priDataType}">
		delete from ${tableName}
		where ${priColumnName} = #{${priFormatColumnName}}
	</delete>
	
	
	<delete id="deleteByExample"
		parameterType="${basePackage}.model.${className}Example">
		delete from ${tableName}
		<if test="_parameter != null">
			<include refid="Example_Where_Clause" />
		</if>
	</delete>
	
	
	<insert id="insert" parameterType="${basePackage}.model.${className}">
		
		${initInsert}
		
	</insert>
	
	
	<insert id="insertSelective" parameterType="${basePackage}.model.${className}">
		${initInsertSelective}
	</insert>
	
	
	<select id="countByExample"
		parameterType="${basePackage}.model.${className}Example"
		resultType="java.lang.Long">
		select count(*) from ${tableName}
		<if test="_parameter != null">
			<include refid="Example_Where_Clause" />
		</if>
	</select>
	
	
	
	<update id="updateByExampleSelective" parameterType="map">
		${initUpdateByExampleSelective}
	</update>
	
	
	
	<update id="updateByExample" parameterType="map">
		${initUpdateByExample}
	</update>
	
	
	<update id="updateByPrimaryKeySelective" parameterType="${basePackage}.model.${className}">
		${initUpdateByPrimaryKeySelective}
	</update>
	
	
	<update id="updateByPrimaryKey" parameterType="${basePackage}.model.${className}">
		${initUpdateByPrimaryKey}
	</update>
	
	
</mapper>